package bit.day_01;
/**
 * 编写程序，对输入的年、月、日，给出该天是该年的第多少天？
 *
 * 1、一月、三月、五月、七月、八月、十月、十二月这七个月是31天。
 * 2、四月、六月、九月、十一月这四个月是30天。
 * 3、二月的闰年是29天，一般年份是28天。四年一闰,百年不闰;四百年再闰
 */
import java.util.Scanner;
public class Task_2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("年：");
        int year = input.nextInt();
        System.out.print("月：");
        int month = input.nextInt();
        System.out.print("日：");
        int day = input.nextInt();
        isDays(year,month,day);
    }

    public static void isDays(int year,int month,int day){

        /** 创建数组，存放每个月的天数 **/
        int[] days = new int[12];
        //一月、三月、五月、七月、八月、十月、十二月这七个月是31天
        days[1-1] = 31;
        days[3-1] = 31;
        days[5-1] = 31;
        days[7-1] = 31;
        days[8-1] = 31;
        days[10-1] = 31;
        days[12-1] = 31;
        //四月、六月、九月、十一月这四个月是30天
        days[4-1] = 31;
        days[6-1] = 31;
        days[9-1] = 31;
        days[11-1] = 31;
        //二月的闰年是29天，一般年份是28天
        if(isLeapYear(year)){
            days[2-1] = 29;
        }else{
            days[2-1] = 28;
        }

        /** 判断输入日期是否合理 **/
        if(month > 12){
            System.err.println("日期违规！");
            return;
        }
        if(day > days[month-1]){
            System.err.println("日期违规！");
            return;
        }

        /** 计算第几天 **/
        int count = 0;
        int mon = 1;
        while(mon < month){
            count += days[mon-1];
            mon ++;
        }
        count += day;
        System.out.println("该天是该年的第" + count + "天");
    }

    public static boolean isLeapYear(int year){
        if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
            return true;
        }else{
            return false;
        }
    }
}
